menu: Respect borders properly for scroll arrows
authorBenjamin Otte <otte@redhat.com>
Sat, 11 Oct 2014 00:40:48 +0000 (02:40 +0200)
committerBenjamin Otte <otte@redhat.com>
Sat, 11 Oct 2014 22:25:23 +0000 (00:25 +0200)
gtk/gtkmenu.c

index 270fbec7c823cfe43e1a1a86d196ea33871c028c..1dab98c59f77aaa0d23665a8a355a720f938f128 100644 (file)
@@ -2991,44 +2991,46 @@ get_arrows_visible_area (GtkMenu      *menu,
   border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
   border->x = border_width + menu_padding.left;
   border->y = border_width + menu_padding.top;
-  border->width = gdk_window_get_width (gtk_widget_get_window (widget));
-  border->height = gdk_window_get_height (gtk_widget_get_window (widget));
+  border->width = gdk_window_get_width (gtk_widget_get_window (widget))
+                  - 2 * border_width - menu_padding.left - menu_padding.right;
+  border->height = gdk_window_get_height (gtk_widget_get_window (widget))
+                   - 2 * border_width - menu_padding.top - menu_padding.bottom;
 
   switch (arrow_placement)
     {
     case GTK_ARROWS_BOTH:
       upper->x = border->x;
       upper->y = border->y;
-      upper->width = border->width - 2 * border->x;
+      upper->width = border->width;
       upper->height = scroll_arrow_height;
 
       lower->x = border->x;
       lower->y = border->height - border->y - scroll_arrow_height;
-      lower->width = border->width - 2 * border->x;
+      lower->width = border->width;
       lower->height = scroll_arrow_height;
       break;
 
     case GTK_ARROWS_START:
       upper->x = border->x;
       upper->y = border->y;
-      upper->width = (border->width - 2 * border->x) / 2;
+      upper->width = border->width / 2;
       upper->height = scroll_arrow_height;
 
       lower->x = border->x + upper->width;
       lower->y = border->y;
-      lower->width = (border->width - 2 * border->x) / 2;
+      lower->width = border->width - upper->width;
       lower->height = scroll_arrow_height;
       break;
 
     case GTK_ARROWS_END:
       upper->x = border->x;
-      upper->y = border->height - border->y - scroll_arrow_height;
-      upper->width = (border->width - 2 * border->x) / 2;
+      upper->y = border->height - scroll_arrow_height;
+      upper->width = border->width / 2;
       upper->height = scroll_arrow_height;
 
       lower->x = border->x + upper->width;
-      lower->y = border->height - border->y - scroll_arrow_height;
-      lower->width = (border->width - 2 * border->x) / 2;
+      lower->y = border->height - scroll_arrow_height;
+      lower->width = border->width - upper->width;
       lower->height = scroll_arrow_height;
       break;
 
@@ -3038,7 +3040,7 @@ get_arrows_visible_area (GtkMenu      *menu,
        lower->x = lower->y = lower->width = lower->height = 0;
     }
 
-  *arrow_space = scroll_arrow_height - menu_padding.top - menu_padding.bottom;
+  *arrow_space = scroll_arrow_height;
 }
 
 static gboolean